package modeloCarmenSanDiego.edificios;

import modeloCarmenSanDiego.*;
import modeloCarmenSanDiego.pistas.*;

public abstract class Edificio {

	protected int vecesQueEntro = 1;
	protected Reloj reloj;
	protected Tema tema;
	protected String nombre;
	private Herida herida = Herida.RANDOM;
	protected boolean estaElLadron = false;
	private boolean seHirioAlPolicia;
	private int tiempoDeCuracion;
		
	public void setTipoDeHerida(Herida herida){
		this.herida = herida;
	}
	
	public void esconderLadron(){
		this.estaElLadron = true;
	}
	
	public Pista pedirPista(Ladron ladron, Ciudad ciudadActual, DificultadDePista dificultad){
		this.reloj.avanzarTiempo(this.vecesQueEntro);
		if (this.vecesQueEntro <=2 )
			this.vecesQueEntro +=1;
		this.herirAlPolicia();
		Camino caminoDelLadron = ladron.getCamino();
		if(caminoDelLadron == null) return new Pista(false, null, null, null, null);
		boolean seVioAlLadron = caminoDelLadron.contieneCiudad(ciudadActual);
		Ciudad ciudadDondeSeFue = caminoDelLadron.getCiudadSiguiente(ciudadActual);
		return new Pista(seVioAlLadron, dificultad, this.tema, ladron, ciudadDondeSeFue);
	}

	private void herirAlPolicia() {
		tiempoDeCuracion = this.herida.getTiempoDeCuracion();
		this.reloj.avanzarTiempo(tiempoDeCuracion);
		seHirioAlPolicia = (tiempoDeCuracion > 0);
	}
	
	//luego de pedir una pista hay que preguntar si se hirio al policia cuando
	//se quiera mostrar esa informacion
	public boolean seHirioAlPolicia(){
		return this.seHirioAlPolicia;
	}
	
	public String getTipoDeHerida(){
		return this.herida.tipoDeHerida(this.tiempoDeCuracion);
	}

	public boolean estaElLadron() {
		return estaElLadron;
	}

	public String getNombre() {
		return nombre;
	}
}
